package com.situation.mapper;

import com.situation.pojo.DO.TbMenu;
import com.situation.pojo.DO.TbRole;
import com.situation.pojo.DO.TbUser;
import com.situation.pojo.DO.TbUserRole;
import com.situation.pojo.VO.UserRoleVO;
import com.situation.pojo.VO.UserVO;
import org.apache.catalina.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @author qian
 * @date 2021/12/7 9:05
 */
@Mapper
@Component
public interface TbUserMapper {
    /***
     * @Description: 添加用户
     * @Param: [tbUser]
     * @return: int
     * @Author: 赵启岸
     * @Date: 2021/12/7
     */
    int addTbUser(TbUser tbUser);

    /***
     * @Description: 删除用户
     * @Param: [id]
     * @return: int
     * @Author: 赵启岸
     * @Date: 2021/12/7
     */
    int deleteTbUser(Long id);

    /***
     * @Description: 通过id修改用户
     * @Param: [tbUser]
     * @return: int
     * @Author: 赵启岸
     * @Date: 2021/12/7
     */
    int updateTbUserById(TbUser tbUser);

    /***
     * @Description: 通过id查询一个页面显示用户
     * @Param: [id]
     * @return: com.situation.pojo.DO.TbUser
     * @Author: 赵启岸
     * @Date: 2021/12/7
     */
    UserVO queryUserVoById(Long id);

    /***
     * @Description: 查询所有页面显示用户
     * @Param: []
     * @return: java.util.List<com.situation.pojo.DO.TbUser>
     * @Author: 赵启岸
     * @Date: 2021/12/7
     */
    List<UserVO> queryAllUserVo();

    /***
     * @Description: 查询数据库所有用户
     * @Param: []
     * @return: java.util.List<com.situation.pojo.DO.TbUser>
     * @Author: 赵启岸
     * @Date: 2021/12/7
     */
    List<TbUser> findAllTbUser();


    /***
     * @Description: 多条件模糊查询用户
     * @Param: [userVo]
     * @return: java.util.List<com.situation.pojo.VO.UserVo>
     * @Author: 赵启岸
     * @Date: 2021/12/8
     */
    List<UserVO> findUserVOByTbUser(TbUser tbUser);

    /***
     * @Description: 查询用户登入信息
     * @Param: [tbUser]
     * @return: com.situation.pojo.DO.TbUser
     * @Author: 赵启岸
     * @Date: 2021/12/8
     */
    UserRoleVO userInfo(String username);

    /**
     * 登录
     *
     * @param username
     * @param passsword
     * @return
     */
    TbUser login(String username, String passsword);


    /***
     * @Description: 给指定id用户添加用户权限
     * @Param: [tbUserRole]
     * @return: int
     * @Author: 赵启岸
     * @Date: 2021/12/8
     */
    int addTbUserRole(Long userId,Long roleId);

    /***
     * @Description: 通过用户id查询现有角色
     * @Param: [id]
     * @return: com.situation.pojo.DO.TbRole
     * @Author: 赵启岸
     * @Date: 2021/12/8
     */
    List<TbRole> findRoleById(Long id);

    /**
     * 通过用户名查询   盐值
     *
     * @param username
     * @return
     */
    String findSalt(String username);

    /**
     * 通过用户名查询单个用户
     *
     * @param username
     * @return
     */
    TbUser findUserByUsername(String username);

    int updateStatus(Long id,int status);


    /**
     * 删除用户的角色
     * @param id
     * @return
     */
    int deleteRolesById(Long id);


    List<String> findRoleByUsername(String username);


    List<String> findPermissionByUsername(String username);

    /**
     * 根据登陆者来获取菜单
     * @return
     */
    List<TbMenu> findMenu(String username);

}
